/******************************************************************************
 * Copyright (C) 2010 ShenZhen ComTop Information Technology Co.,Ltd
 * All Rights Reserved.
 * 本软件为深圳康拓普开发研制。未经本公司正式书面同意，其他任何个人、团体不得使用、
 * 复制、修改或发布本软件.
 *****************************************************************************/

package com.code.common.template;

import com.code.common.utils.StringUtils;

/**
 * <p>
 * NOTE: These examples assume you have placed an instance of the current context within itself as 'ctx'. And, of
 * course, the NullTool is assumed to be available as 'null'.
 * </p>
 * <p>
 * 
 * <pre>
 * Example uses:
 *  $foo                              -&gt; bar
 *  $null.isNull($foo)                -&gt; false
 *  $null.isNotNull($foo)             -&gt; true
 * </pre>
 * 
 * </p>
 * 
 * @author 郑重
 * @since 1.0
 * @version 2011-2-19 郑重
 */
public final class NullTool {
    
    /** NullTool类的单例 */
    private static NullTool nullTool = new NullTool();
    
    /**
     * 构造函数
     */
    private NullTool() {
    }
    
    /**
     * 获取类实例
     * 
     * @return JsonUtil类的实例
     */
    public static NullTool getInstance() {
        return nullTool;
    }
    
    /**
     * 判断是否为空
     * 
     * @param object 处理对象
     * @return 是否为空
     */
    public boolean isNull(Object object) {
        return object == null;
    }
    
    /**
     * 判断是否不为空
     * 
     * @param object 处理对象
     * @return 是否不为空
     */
    public boolean isNotNull(Object object) {
        return !this.isNull(object);
    }
    
    /**
     * 对象等于空或字符串等于''
     * 
     * @param object 处理对象
     * @return 是否为空
     */
    public boolean isEmpty(Object object) {
        boolean bResult = true;
        if (object != null) {
            if (object instanceof String) {
                bResult = StringUtils.EMPTY.equals(object);
            } else {
                bResult = false;
            }
        }
        return bResult;
    }
    
    /**
     * 对象不等于空和字符串不等于''
     * 
     * @param object 处理对象
     * @return 是否不为空
     */
    public boolean isNotEmpty(Object object) {
        return !this.isEmpty(object);
    }
    
    /**
     * 返回空对象
     * 
     * @return 空对象
     */
    public Object getNull() {
        return null;
    }
    
}